#include "Shm.hpp"
#include "Fifo.hpp"

int main()
{
    Shm shm(PATH,prev,prev,1024,CREATER);
    // 创建共享内存。
    shm.Create();
    
    Fifo_Make ff(FIFO_FILE);

    ff.Create();

    Fifo_Oper fo(FIFO_FILE);

    int i = 0;

    char* mem = shm.VitualPtr();

    while(true)
    {
        if(fo.Wait())
        {
            std::cout << mem << "       " << "[" << i << "]" << std::endl;
            ++i;
        }
        else
        {
            break;
        }
    }

    std::cout << "Serve End" << std::endl;
    shm.Destroy();

    return 0;
}

// int main()
// {
//     // 为函数shmget提供算法选出一个不太会冲突的代表值。
//     // key标识共享内存的唯一性。
//     key_t k = ftok(PATH,proj);
//     // 创建共享内存
//     int shmid = shmget(k,1024,IPC_CREAT | IPC_EXCL | gmode);

//     if(shmid < 0)
//     {
//         ERR_EXIT("shmget");
//     }

//     // 关联共享内存，类似于malloc。
//     char* mem = (char*)shmat(shmid,nullptr,0);

//     while(true)
//     {
//         std::cout << mem << std::endl;
//         sleep(1);
//     }

//     return 0;
// }